package ar.com.gestion.listeners;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;
import javax.swing.JTextField;

import ar.com.gestion.bo.ProductoBO;
import ar.com.gestion.custom.BotonCustom;
import ar.com.gestion.dominio.Producto;
import ar.com.gestion.springcontext.SpringContext;
import ar.com.gestion.tabla.ModeloTabla;
import ar.com.gestion.ventas.ModuloVentas;
import ar.com.gestion.vistas.FormAgregar;

public class AgregarProductoListener implements ActionListener {

	private ProductoBO productoBO = (ProductoBO) SpringContext.getContext()
			.getBean("productoBO");
	
	private ModuloVentas moduloVentas = (ModuloVentas) SpringContext.getContext()
			.getBean("moduloVentas");

	@Override
	public void actionPerformed(ActionEvent e) {

		BotonCustom boton = (BotonCustom) e.getSource();
		FormAgregar context = boton.getContext();
		Producto producto = new Producto();
		JTextField[] textFields = context.getTextields();

		boolean flag = true;
		String mensaje = "";
		for (int i = 0; i < textFields.length; i++) {

			// 1,4,7
			switch (i) {
			case 1:
				try {
					float parseFloat = Float
							.parseFloat(textFields[i].getText());
				} catch (NumberFormatException e1) {
					mensaje += "el campo cantidad debe ser un numero.\n";

					flag = false;
				}
				break;
			case 2:
				try {
					float parseFloat = Float
							.parseFloat(textFields[i].getText());
				} catch (NumberFormatException e1) {
					mensaje += "el campo precio debe ser un numero.\n";

					flag = false;
				}
				break;
			case 5:
				try {
					float parseFloat = Float
							.parseFloat(textFields[i].getText());
				} catch (NumberFormatException e1) {
					mensaje += "el campo talle debe ser un numero.\n";

					flag = false;
				}
				break;
			}

			if (textFields[i].getText().equals("")) {
				flag = false;
			}

		}
		if (flag) {

			producto.setCodigo(textFields[0].getText());
			producto.setCantidad(Integer.parseInt(textFields[1].getText()));
			producto.setPrecio(Float.parseFloat(textFields[2].getText()));
			producto.setTipo(textFields[3].getText());
			producto.setMaterial(textFields[4].getText());
			producto.setTalle(Float.parseFloat(textFields[5].getText()));
			producto.setDescripcion((textFields[6].getText()));
			producto.setColor((textFields[7].getText()));
			producto.setModelo((textFields[8].getText()));
			producto.setReservado(0);
			productoBO.agregarProducto(producto);
			//aniado el nuevo producto a la tabla
			ModeloTabla modeloTabla =(ModeloTabla)moduloVentas.getTabla().getModel();
			modeloTabla.anhadeProducto(producto);
			context.dispose();
		} else {

			JOptionPane.showMessageDialog(null, mensaje
					+ "Se deben completar todos los campos");
		}

	}

}
